﻿open System
open System.Diagnostics
open LinqLib.Sequence
open LinqLib.Array
open Microsoft.FSharp.Math


Debugger.Break()

type TestType = { a : int;  
                  b : int }
                  override m.ToString() = String.Format("{0} of {1}", m.a , m.b)

let GetNewType x = { a = x ; b = x * x} 

let arr1 = Enumerator.Generate<int>(1, 1, 100).Shuffle().ToArray(5, 5, 4)
let arr2 = Enumerator.Generate<int>(1, 1, 49).Shuffle().ToArray(7, 7)
let arr3 = Enumerator.Generate<TestType>(15, GetNewType).Shuffle().ToArray(5, 3)
let arr4 = Enumerator.Generate<TestType>(27, GetNewType).Shuffle().ToArray(9, 3)


let aa1 = matrix [ [ 0.; 1.; 1. ]
                   [ 1.; 0.; 0. ] 
                   [ 1.; 0.; 1. ] ]

let aa2 = matrix [ [ 0.; 1.; 1.; 2.; 3. ]
                   [ 1.; 0.; 0.;1.2; 3.3 ] 
                   [ 1.; 0.; 1.;4.1; 1.3 ] ]

let aa3 = matrix [ [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ]
                   [ 0.; 1.; 1.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.; 3.; 2.1; 3.2; 2.1; 3.2 ] ]

let v1 = vector [1.; 1.3; 1.4; 1.2; 1.5; 1.7; 1.9]
let v2 = vector [1.; 1.3; 1.4; 1.2; 1.5; 1.7; 1.9; 1.3; 1.4; 1.2; 1.5; 1.3; 1.4; 1.2; 1.5]

Debugger.Break()
Debugger.Break()
Debugger.Break()

